package com.gestion.controlador;

import com.gestion.modelo.MenuModelo;
import com.gestion.modelo.dominio.EstadosPedido;
import com.gestion.modelo.dominio.TipoUsuario;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import reportes.Reporte;
import vista.JFMenu;

/**
 * @author Mauri@<itsoluciones.com.ar>
 */
public class MenuControlador {

    private MenuModelo menuModelo;
    private final JFMenu jFMenu;

    /**
     * Constructor con Listener
     * @param menuModelo Modelo Menu
     * @param jFMenu    vista Formulario
     */
    public MenuControlador(MenuModelo menuModelo, final JFMenu jFMenu) {
        //System.out.println(this.toString());

        this.menuModelo = menuModelo;
        this.jFMenu = jFMenu;

        actualizarPantalla();

        jFMenu.agregarMenuPedidosListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //queda asi!!!
                ListadoPedidosControlador.invocarVista(EstadosPedido.PENDIENTE);
            }
        });
        jFMenu.agregarMenuPedidosEntregarListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //queda asi!!!
                ListadoPedidosControlador.invocarVista(EstadosPedido.ENTREGAR);
            }
        });

        jFMenu.agregarMenuReporteCanceladoListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Reporte report = new Reporte();
                report.mostrarReporte(EstadosPedido.CANCELADO);
                //report.mostrarReporteCancelado();
            }
        });
        jFMenu.agregarMenuReportePendienteListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Reporte report = new Reporte();
                report.mostrarReporte(EstadosPedido.PENDIENTE);
            }
        });
        jFMenu.agregarMenuReporteEntregadoListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Reporte report = new Reporte();
                report.mostrarReporte(EstadosPedido.ENTREGADO);
            }
        });
        jFMenu.agregarMenuReporteCantidadProductosListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Reporte report = new Reporte();
                report.mostrarReporteCantidadProductos();
            }
        });
        jFMenu.agregarMenuReporteProductosAEscasearListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Reporte report = new Reporte();
                report.mostrarReporteProductoAEscasear();
            }
        });

    }

    /**
     * Muestra la vista
     * Crea y muestra el formulario
     */
    public static void invocarVista() {

        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {

                MenuModelo menuModelo = new MenuModelo();
                JFMenu jfMenu = new JFMenu();
//idem JFlogin
                MenuControlador menuControlador = new MenuControlador(menuModelo, jfMenu);
                jfMenu.setVisible(true);
            }
        });

    }

    private void actualizarPantalla() {
        //<editor-fold defaultstate="collapsed" desc="Según Usuario">
        if (TipoUsuario.USER.equals(Session.getInstance().getUsuario().getTipousuario())) {
            jFMenu.Listado_Pedidos(false);
        }
        //</editor-fold>

    }
}
